<?php

namespace Admin\Model;

use Zend\Db\TableGateway\AbstractTableGateway;
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\Sql\Select;
use Zend\Db\Sql\Sql;
use Zend\Crypt\Password\Bcrypt;
use Zend\Session\Container;
use Zend\Http\Client;
use Zend\Db\Sql\Where;
use Zend\Paginator\Adapter\DbSelect;
use Zend\Paginator\Paginator;

class VideoTable extends AbstractTableGateway
{
    protected $table = 'tbl_video';

    public function __construct(Adapter $adapter)
    {
        $this->adapter = $adapter;
        $this->resultSetPrototype = new ResultSet();
        $this->resultSetPrototype->setArrayObjectPrototype(new Video());

        $this->initialize();
    }

    /*
    public function fetchAll()
    {
        $resultSet = $this->select();
        return $resultSet;
    }
    */
    //*****
//**********************************************************************************************//
//*****
    




    public function fetchAll() {
       // tạo ra một Chọn đối tượng mới cho album bảng 
            $select = new Select('tbl_video');
            // tạo ra một kết quả mới thiết lập dựa trên các thực thể Album
            $resultSetPrototype = new ResultSet();
            $resultSetPrototype->setArrayObjectPrototype(new Video());
            //tạo ra một bộ chuyển đổi mới pagination đối tượng
            $paginatorAdapter = new DbSelect(
                // cấu hình chọn đối tượng
                $select,
                //các bộ chuyển đổi để chạy nguoc lại
                $this->getAdapter(),
                $resultSetPrototype
                );
            $Paginator =  new Paginator($paginatorAdapter);
            
            
            return $Paginator;
    }

    public function getVideo($id)
    {
        $id = (int)$id;
        $rowset = $this->select(array('video_id' => $id));
        $row = $rowset->current();
        if (!$row) {
            throw new \Exception("Could not find row $id");
        }
        return $row;
    }
    public function getvideobyid($id)
    {
       $select = new Select('tbl_video');
       $select->where(array('video_id'=>$id));
            // tạo ra một kết quả mới thiết lập dựa trên các thực thể Album
        $resultSetPrototype = new ResultSet();
        $resultSetPrototype->setArrayObjectPrototype(new Video());
        //tạo ra một bộ chuyển đổi mới pagination đối tượng
        $paginatorAdapter = new DbSelect(
            // cấu hình chọn đối tượng
            $select,
            //các bộ chuyển đổi để chạy nguoc lại
            $this->getAdapter(),
            $resultSetPrototype
            );
        $Paginator =  new Paginator($paginatorAdapter);
        
        
        return $Paginator;
    }


     public function getbytitle($str)
    {


        $sql = new Sql($this->adapter);
        $select = $sql->select();
        $select->from ('tbl_video');
        $where= new Where();
        $where->like('title','%'.$str.'%');
        $select->where($where);
        $select->order('video_id DESC');
        $selectString = $sql->prepareStatementForSqlObject($select);
        $results = $selectString->execute();

        
        $resultSetPrototype = new ResultSet();
        $resultSetPrototype->setArrayObjectPrototype(new Video());
        $paginatorAdapter = new DbSelect(
            $select,
            $this->getAdapter(),
            $resultSetPrototype
            );
        $Paginator =  new Paginator($paginatorAdapter);
        return $Paginator;
    }

  


    public function saveVideo(Video $video)
    {
        $data = array();
        foreach ($video as $key => $value) {
            if($value !=null)
            {
                $data[$key] = $value;
            }
        }

        $id  = (isset($data['video_id']))  ? $data['video_id'] : null;
        if ($id == null) {
            return $this->insert($data);
        } 
        else 
        {   
            return $this->update($data, array('video_id' => $id));
        }
    }

    public function deleteVideo($id)
    {
        return $this->delete(array('video_id' => $id));
    }




//******************************************************************************************//
    public function Upfile($data)
    {
        if (isset($data['name'])) 
            {
                $allowed = array('image/jpeg','image/jpg','image/png','image/x-png');
                if(in_array(strtolower($data['type']),$allowed))
                {
                    $ext = end(explode('.', $data['name']));
                    $rename = uniqid(rand(),true).'.'."$ext";

                   
                    if(!is_dir("../saoonline/public/photo"))
                    {  
                        mkdir("../saoonline/public/photo", 0700);
                         if(move_uploaded_file($data['tmp_name'], "../saoonline/public/photo/".$rename))
                        {
                            return $rename;
                        }else
                        {
                            return NULL;
                        }
                    }
                    else
                    {
                         if(move_uploaded_file($data['tmp_name'], "../saoonline/public/photo/".$rename))
                        {
                            return $rename;
                        }else
                        {
                            return NULL;
                        }
                    } 
                }
                else
                {
                    return NULL;
                    $Error[]= "khong dung dinh dang:)";
                }
                $Data[] = $data['error'];
                $result = $this->getProductTable()->checkErrorImg($Data);

                if (isset($data['tmp_name']) && is_file($data['tmp_name']) && file_exists($data['tmp_name'])) 
                {
                    unlink($data['tmp_name']);
                }
            }//END ISSER FILES
    }

//*********************************************************************************//

    public function checkErrorImg($data)
    {
        switch ($data[0]) {
            case 1:
                return "upload vuot qua file trong php.ini";
                break;
             case 2:
                return "Vuot qua kich thuoc file cho phep";
                break;
             case 3:
                return "upload duoc mot 1 phan";
                break;
             case 4:
                return "khong co file nao";
                break;
             case 5:
                return "upload vuot qua file trong php.ini";
                break;
             case 6:
                return "khong tim dc thu muc";
                break;
             case 7:
                return "Loi CHMOD";
                break;
             case 8:
                return "Loi he thong";
                break;
            
        }
    }
//*********************************************************************************//
}